package com.medic.util;

import java.util.Random;
import java.util.UUID;

/**
 * 字符串操作帮助类（存储资源文件中对应的key）
 * 
 * @author Mr.zhang
 *
 */
public class StringUtil {

	/**
	 * 生成随机字符串的基础串
	 */
	private final static String BASE_STR = "abcdefghijklmnopqrstuvwxyz";

	/**
	 * 失败返回结果
	 */
	public final static String RESULT_FAIL = "fail";
	/**
	 * 默认药品名字
	 */
	public final static String MEDIC_NAME = "羟考酮";
	/**
	 * 分钟、小时、天的毫秒数
	 */
	public final static int MINUTE = 60000;
	public final static int HOUR = 3600000;
	public final static int DAY = 86400000;

	/**
	 * session中存放的user的键
	 */
	public final static String USER_KEY = "user";
	public final static String WECHAT_KEY = "weichat";
	/**
	 * session中存放的doctor的键
	 */
	public final static String DOCTOR_KEY = "doctor";
	public final static String PHARMACIST_KEY = "pharmacist";
	public final static String ASSITANT_KEY = "assitant";

	/******* 以下参数都是资源文件中对应的key *******/
	/**
	 * 资源文件的文件名
	 */
	public final static String RESOURCE = "config.properties";

	/**
	 * 需要过滤的文件类型（在资源文件中的键）
	 */
	private final static String FILE_TYPE = "fileType";

	/**
	 * 文件上传目录key
	 */
	public final static String FILE_UPLOAD = "fileUpload";

	/**
	 * 系统根目录
	 */
	public final static String ROOT_DIRECTORY = "rootDirectory";

	/**
	 * 编码的key
	 */
	public final static String ENCODE = "encode";

	/**
	 * 获取微信token请求地址的key
	 */
	public final static String TOKEN_URL = "tokenUrl";
	/**
	 * 微信appId的key
	 */
	public final static String APP_ID = "appId";
	/**
	 * 微信appSecret的key
	 */
	public final static String APP_SECRET = "appSecret";
	/**
	 * 获取微信jsapi_ticket的地址的key
	 */
	public final static String TICKET_URL = "ticketUrl";
	/**
	 * 下载微信服务器上面图片的地址的key
	 */
	public final static String DOWN_MEDIA_URL = "downMediaUrl";
	/**
	 * 推送模板消息的请求地址的key
	 */
	public final static String PUSH_TEMP_MSG_URL = "pushTempMsgUrl";

	public final static String TASK_PAGE_SIZE = "task_pagesize";

	/**
	 * 获取随机且唯一文件名（长度是33+后缀名长度）
	 * 
	 * @param doc
	 *            文件后缀名
	 * @return 返回随机文件名
	 */
	public static String getFileName(String doc) {
		UUID uuid = UUID.randomUUID();
		return uuid.toString().replace("-", "") + "." + doc;
	}

	/**
	 * 过滤文件
	 * 
	 * @param doc
	 *            文件后缀名
	 * @return true表明存在，false表明不存在
	 */
	public static boolean filterFileType(String doc) {
		return CacheUtil.getConfig().getProperty(FILE_TYPE).contains(doc.toLowerCase());
	}

	/**
	 * 获取字段的set方法
	 * 
	 * @param fieldName
	 *            字段名
	 * @return 返回set方法名
	 */
	public static String getMethodName(String fieldName) {
		byte[] items = fieldName.getBytes();
		items[0] = (byte) ((char) items[0] - 'a' + 'A');
		;
		return "set" + new String(items);
	}

	/**
	 * 获取随机字符串
	 * 
	 * @param length
	 *            随机字符串的长度
	 * @return 随机字符串
	 */
	public static String getRandomString(int length) { // length表示生成字符串的长度
		Random random = new Random();
		StringBuffer sb = new StringBuffer();
		int number;
		for (int i = 0; i < length; i++) {
			number = random.nextInt(BASE_STR.length());
			sb.append(BASE_STR.charAt(number));
		}
		return sb.toString();
	}
}
